Depth cameras are used in many applications, including but not limited to gaming, manufacturing and medical imaging. Conventional depth cameras provide the ability to acquire a rich representation of a scene in a compact and easy-to-implement manner. A depth camera, mounted in a single stationary position, acquires image data which consists of a two-dimensional image (e.g., a two-dimensional RGB image, in which each pixel is assigned a Red, a Green and a Blue value), and a depth image, in which the value of each pixel corresponds to a depth or distance of the pixel from the depth camera. This image data, consisting of a two-dimensional image and a depth image, will be referred to herein as a two-dimensional depth image.
It is often desirable to register two-dimensional depth images with one another. Registration may entail establishing correspondences between pixels of one two-dimensional depth image and pixels of another two-dimensional depth image. For example, pixels which depict a shoulder of a patient in a first two-dimensional depth image are preferably identified as corresponding to pixels depicting the patient's shoulder in a second two-dimensional depth image, even if the shoulder has moved within the image frame. Registration may facilitate the tracking of objects through multiple successively-acquired two-dimensional depth images, the association of portions of a two-dimensional depth image with features of a corresponding model of the imaged object, and many other use cases. However, current systems for registering two-dimensional depth images are inefficient or otherwise unsuitable, particularly in the case of non-rigid registration.